package com.yanti.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.yanti.domain.ResponseResult;
import com.yanti.domain.entity.UserDailyStudyTime;

import java.util.List;


/**
 * (UserDailyStudyTime)表服务接口
 *
 * @author luo
 * @since 2024-12-16 10:54:32
 */
public interface UserDailyStudyTimeService extends IService<UserDailyStudyTime> {
    /**
     * 获取用户总学习时长
     * @param userId 用户id
     * @return
     */
    ResponseResult getTotalStudyTimeInMinutes(String userId);

    /**
     * 获取用户今日学习时长
     * @param uid 用户id
     * @return
     */
    ResponseResult getTodayStudyTimeInMinutes(String uid);

    long scanAndSumRedisValues(String pattern);
    /**
     * 解析Redis中的值并转换为Long类型
     * @param value
     * @return
     */
    long parseRedisValueToLong(Object value);
    /**
     * 更新用户学习时长
     *
     * @param uid                用户id
     * @param studyTimeInMinutes 学习时长（单位：分钟）
     * @param questionIds
     * @return
     */
    Boolean updateUserDailyStudyTime4DB(String uid, long studyTimeInMinutes, List<Long> questionIds);
    /**
     * 更新用户学习时长
     * @param uid 用户id
     * @param studyTimeInMinutes 学习时长（单位：分钟）
     * @return
     */
    Boolean updateUserDailyStudyTime4Cache(String uid, long studyTimeInMinutes);
    /**
     * 删除用户学习时长缓存
     * @param uid 用户id
     * @return
     */
    Boolean deleteUserDailyStudyTime4Cache(String uid);
    /**
     * 更新用户每日答题数量缓存
     * @param uid 用户id
     * @param questionIds 答题id列表
     * @return
     */
    Boolean updateUserQuestionDailyCount4Cache(String uid, List<Long> questionIds);
    /**
     * 获取用户每日答题数量缓存
     * @param uid 用户id
     * @return
     */
    Integer getUserQuestionCountInCache(String uid);

    ResponseResult getUserQuestionCount(String uid);
}

